package com.joker.aigc.chat.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.joker.aigc.domain.dto.UserApplyCriteria;
import com.joker.aigc.domain.dto.UserApplyDto;
import com.joker.aigc.domain.dto.UserFriendDto;
import com.joker.aigc.domain.entity.UserFriend;
import com.baomidou.mybatisplus.extension.service.IService;
import com.joker.aigc.domain.vo.UserApplyVo;
import com.joker.aigc.domain.vo.UserVo;

import java.util.List;

/**
 * @author 20346
 * @description 针对表【user_friend(用户联系人表)】的数据库操作Service
 * @createDate 2023-12-17 11:26:08
 */
public interface UserFriendService extends IService<UserFriend> {


    /**
     * 申请好友信息
     * @param applyUid 申请人id
     * @param dto      申请信息
     */
    void addUserApply(Long applyUid, UserApplyDto dto);

    /**
     * 通过申请。申请信息的id
     *
     * @param id userapply表的id
     */
    void accessUserApply(Long id);

    /**
     * 拒绝好友申请
     *
     * @param id 申请信息的id
     */
    void deleteUserApply(Long id);

    /**
     * 查询用户id的所有好友信息
     *
     * @param uid 用户id
     * @return 用户信息
     */
    List<UserVo> queryUserFriend(Long uid);


    /**
     * 拉黑好友
     * @param userFriendDto 拉黑好友信息
     */
    void blackFriend(UserFriendDto userFriendDto);

    /**
     * 查询所有为通过申请信息记录。申请时间。
     *
     * @param uid 用户id
     * @return 申请好友信息
     */
    Page<UserApplyVo> queryUserApplyInfo(Long uid, UserApplyCriteria userApplyCriteria);
}
